/*MyPhotoIndex Free Photo Organizer <www.myphotoindex.com>
  Copyright (C) <2006-2009>  <Asaf Yarkoni asaf@yarkoni.net>

  This program is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation, either version 3 of the License, or
  (at your option) any later version.

  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with this program.  If not, see <http://www.gnu.org/licenses/>.*/
using System;
using System.Collections.Generic;
using System.Text;
using System.Security.Cryptography;
using System.IO;
using System.Runtime.ConstrainedExecution;
using System.Runtime.CompilerServices;

namespace MyPhotoIndex.Utilities
{
    sealed public class FileUtilities
    {
        private static MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();

        public static String GetFileMD5Signature(String fileName)
        {
            using (FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read, 102400))
            {
                byte[] streamBytes = new byte[102400];
                fs.Read(streamBytes, 0, 102400);
                byte[] hashBytes = md5.ComputeHash(streamBytes);

                StringBuilder sb = new StringBuilder();
                foreach (byte hashByte in hashBytes)
                {
                    sb.Append(String.Format("{0:X2}", hashByte));
                }

                return sb.ToString();
            }
        }
    }
}
